'Dichiarazione della struttura per la gestione dell'Icona di notifica
Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 64
End Type
'Comandi per l'inserimento, la modifica e cancellazione dell'Icona di notifica
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
'Ritorno informazioni del mouse integrate con l'Icona di Notifica
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201 'Pulsante sinistro gi∙
Private Const WM_LBUTTONUP = &H202 'Pulsante sinistro su
Private Const WM_LBUTTONDBLCLK = &H203 'Doppio click pulsante sinistro
Private Const WM_RBUTTONDOWN = &H204 'Pulsante destro gi∙
Private Const WM_RBUTTONUP = &H205 'Pulsante destro su
Private Const WM_RBUTTONDBLCLK = &H206 'Doppio click pulsante destro
'Valori dei flag per attivare il messaggio, l'icona ed il tooltip
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
'Dichiarazione della chiamata alla funzione API
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim nid As NOTIFYICONDATA
Public Sub AddIconaNotifica()
nid.cbSize = Len(nid)
nid.hWnd = Form1.hWnd
nid.uId = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallBackMessage = WM_MOUSEMOVE
nid.hIcon = Form1.Icon
nid.szTip = "Icona di notifica" & vbNullChar
Shell_NotifyIcon NIM_ADD, nid
End Sub
Private Sub DeleteIconaNotifica()
Shell_NotifyIcon NIM_DELETE, nid
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
Dim sToolTip As String
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDOWN
Case WM_LBUTTONUP
Case WM_LBUTTONDBLCLK
MsgBox "E' stato premuto il tasto sinistro"
Case WM_RBUTTONDOWN
sToolTip = InputBox("Inserire il nuovo tooltip:", "Conferma")
If sToolTip <> "" Then
nid.szTip = sToolTip & vbNullChar
Shell_NotifyIcon NIM_MODIFY, nid
End If
Case WM_RBUTTONUP
Case WM_RBUTTONDBLCLK
End Select
End Sub
|